package com.example.excelapache_poi.apache_poi操作excel.excel文件导入导出;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;

/**
 * Created by IntelliJ IDEA2022.3.2
 * @Author: Tenghw
 * @Date: 2023/07/03  15:05
 * @Description: apache_poi导入Excel文件方式1
 */
@SuppressWarnings("all")
public class Daoru {
    public static void main(String[] args) throws IOException {
        // 1.打开或创建Excel文件(工作薄)
        XSSFWorkbook workbook = new XSSFWorkbook("E:\\exceldemo\\data.xlsx");
        // 2.获取文件中的第一个sheet(参数可以是工作表序号【即0、1、2...】,也可以是sheet名)（工作表）
        XSSFSheet sheet = workbook.getSheetAt(0);
        // 2.1.设置单元格类型，若不设置，有些numberi数据会报错（比如某列值是数字，会报错：Cannot get a STRING value from a NUMERIC cell）
        //sheet.setCellType(CellType.STRING);//注意：4.1.2版本的poi已经不在使用sheet.setCellType(CellType.STRING);这种对于读取到数据设置为String类型的这种形式
        // 3.注意：xxxRowNum行数是从0开始，即第一行的行数为0，而不是1。
        int lastRowNum = sheet.getLastRowNum();
        //System.out.println("lastRowNum="+lastRowNum);//输出2
        for(int i=0;i<=lastRowNum;i++){
            // 3.1.根据行号，获取该行
            XSSFRow row = sheet.getRow(i);
            // 3.2.获取该行的最后一个单元格的列号
            //注意：xxxCellNum列数是从1开始，即第一列的列数为1，和上面xxxRowNum区分下。
            short lastCellNum = row.getLastCellNum();
            //System.out.println("lastCellNum="+lastCellNum);//输出3
            for (short j = 0; j < lastCellNum; j++){
                DataFormatter dataFormatter = new DataFormatter();
                String cellValue = dataFormatter.formatCellValue(row.getCell(j));
                System.out.print(cellValue+"\t");
            }
            System.out.println();
        }
        // 关闭流
        workbook.close();
    }
}
